﻿#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef int LTDataType;
typedef struct ListNode
{
	struct ListNode* next;//指向下一个节点
	struct ListNode* prev;//指向上一个节点
	LTDataType data;
}LTNode;
//初始化
LTNode* LTInit();
//生成一个节点
LTNode* BuyLTNode(LTDataType x);
//打印节点
void LTPrint(LTNode* phead);
//查找
LTNode* LTFind(LTNode* phead,LTDataType x);
//销毁
void LTDestroy(LTNode* phead);
//尾插
void LTPushBack(LTNode *phead, LTDataType x);
//尾删
void LTPopBack(LTNode* phead);
//头插
void LTPushFront(LTNode* phead, LTDataType x);
//头删
void LTPopFront(LTNode* phead);
//统计链表长度
int LTSize(LTNode* phead);
//在pos位置之前插入x
void LTInsert(LTNode* pos, LTDataType x);//复用时  1.当pos = phead时是尾插  2.当pos = phead->next时是头插
//删除pos位置的节点
void LTDel(LTNode* pos);//复用是，1.当pos = phead->prev时是尾删  2.当pos = phead->next时是头删  